// 全局请求封装
const base_url = ''
// 需要修改wxToken，和根据实际修改请求头
export default (url, method, params) => {
	// 获取本地wxToken
	let wxToken = uni.getStorageSync('wxToken') ? uni.getStorageSync('wxToken') : '';
	// 根据请求方法或URL来判断是否添加请求头
	let header;
	if (method == "post") {
		header.wxToken = wxToken;
		header['Content-Type'] = 'application/json';
	} else {
		header = {
			wxToken: wxToken
		};
	}

	// 返回一个Promise对象
	return new Promise((resolve, reject) => {
		// 判断是否登录，没有则先去请求登录接口
		if (wxToken == '') {
			const that = this;
			uni.login({
				provider: 'weixin',
				success: function(loginRes) {
					uni.request({
						url: base_url + '/user/login',
						method: 'GET',
						header: header,
						data: {
							code: loginRes.code
						},
						success(response) {
							const res = response;
							if (res.data.status == '200') {
								header.wxToken = res.data.wxToken;
								uni.setStorageSync('wxToken', res.data.wxToken);
								// 获取用户信息
								uni.getUserInfo({
									provider: 'weixin',
									success: function(infoRes) {
										console.log('用户昵称为：' + infoRes.userInfo
											.nickName);
										// 执行后续操作
										sendRequest();
									}
								});
							} else {
								// uni.clearStorageSync();
								// 执行后续操作
							}
						},
						fail(err) {
							reject(err);
						},
						complete() {
							// uni.hideLoading();
						}
					});
				}
			});
		} else {
			// 已登录，直接执行后续操作
			sendRequest();
		}

		// 后续操作的函数
		function sendRequest() {
			uni.request({
				url: base_url + url,
				method: method,
				header: header,
				data: params,
				success(response) {
					const res = response;
					if (res.data.status == '200') {
						resolve(res.data);
					} else {
						// uni.clearStorageSync();
						resolve(res);
					}
				},
				fail(err) {
					reject(err);
				},
				complete() {
					// uni.hideLoading();
				}
			});
		}
	}).catch((e) => {});
};